package 引出泛型.语法;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-06-24
 * Time: 16:27
 */
/*
实现一个类，类中包含一个数组成员，使得数组中可以存放任何类型的数据，也可以根据成员方法返回数组某个下标的值？
思路：
1. 以前学过的数组，只能存放指定类型的元素，例如：int[] array = new int[10]; String[] array = new String[10];
2. 所有类的父类，默认为Object类，数组是否创建为Object？
 */
class MyArray {
   public Object[] objects = new Object[10];
   //输入
   public Object getObjects(int pos) {
       return objects[pos];
   }
   //输出
   public void setObjects(int pos, Object obj) {
       this.objects[pos] = obj;
   }
}
public class Test {
    public static void main(String[] args) {
        MyArray myArray = new MyArray();
        myArray.setObjects(0, 100);
        myArray.setObjects(1, "hello");//字符串也可以存放

        String ret = (String)myArray.getObjects(1);
        //String ret = myArray.getObjects(1);//编译报错
        System.out.println(ret);

    }
}
/*
问题：以上代码实现后 发现
1. 任何类型数据都可以存放
2. 下标1本身是字符串，但是编译报错，必须进行强制类型转换

虽然在这种情况下，当前数组任何数据都可以存放，但是，更多情况下，我们还是希望他只能够持有一种数据类型。而不是同时持有这么多类型。所以，泛型的主要目的：就是指定当前的容器，要持有什么样的类型。让编译器去做检验。此时，就需要把类型，作为参数传递，需要什么的类型，就传入什么类型。
 */

/*
语法：
class 泛型类名称<类型形参列表> {
    //这里可以使用类型参数
}

class ClassName<T1, T2, T3...> {
}

class 泛型类型名称<类型参数列表> extends 继承类/*这里可以使用类型参数{
    //这里可以使用类型参数
}

class ClassName<T1, T2, T3...>extends ParentClass<T1>{
    //可以使用部分类型参数
}
 */
